Skip to main content
Version: 1.3

Requirements

Functional

Dissertation Management

  • The system must allow teachers to upload/edit/delete dissertation proposals;
  • The system must allow students to show interest in multiple dissertations and accept only one;
  • The system must allow administrators to accept or deny dissertation proposals by teachers.
  • The system must allow teachers to add dissertation proposals and accept students for them;

User Management

  • The system should allow students to check their dissertation status and manage their proposals;
  • The system should allow teachers to manage their proposals, check interested students and accept them for their proposals;
  • The system should allow administrators to manage the dissertation season and manage the system's users.

User Authentication

  • The system should provide a login mechanism using UA's idp through OAuth2;
  • The system should restrict user access to certain features based on their role (e.g., student, teacher, administrator).
  • The system must do various checks based on user attributes to ensure that only authorized users can access certain features.

Search Functionality

  • The search feature should allow users to search for dissertations based on various criteria, such as title, advisor, courses, areas, publication date;
  • The system should provide advanced search options such as filters and sorting.

Notification System

  • The system will included a notification system to alert users about important events, such as new dissertations, acceptance of proposals, and changes in the status of a dissertation.

Workflow Automation

  • The system should automate approval workflows for dissertation proposals, ensuring that they are reviewed and approved by the appropriate parties before being published;
  • Notifications should be sent to the relevant users when a proposal is submitted, approved, or rejected.

Non-functional

Performance

  • The system should maintain consistent response times as the user base or data volume increases;
  • The system should be able to handle an increasing number of transactions or requests per unit of time.

Scalability

  • The system should accomodate a growing volume of data without significant degradation in performance;
  • The system should support horizontal scaling by distributing workloads accross multiple servers or nodes;
  • The system should support vertical scaling by allowing the addition of more resources to a single server;
  • Ensure that vertical scaling provides a proportional increase in performance.

Availability and Fault Tolerance

  • In the event of a server failure, the system should automatically redirect traffic to an available server in a short period of time, to minimize service disruption;
  • The system shall achieve a minimum uptime of 99.99% over any consecutive 30-day period, excluding scheduled maintenance windows;
  • The system should remain available and responsive in the event of component failures or increased load;
  • There should be sufficient capacity to accommodate the failover of services without impacting performance.

Load Balancing

  • The system should distribute incoming requests evenly across multiple servers to ensure balanced resource utilization;
  • Load balancers should scale seamlessly to handle increased network traffic.

Data Partitioning and Integrity

  • The system should be able to shard data effectively to distribute it accross multiple nodes.
  • The system shall implement thorough input validation mechanisms to ensure that only valid and properly formatted data is accepted;

Security

  • Access permissions should be based on roles to ensure proper authorization (RBAC - Role-Based Access Control);
  • All sensitive data transmitted over the network should be encrypted using secure protocols (e.g., TLS/SSL);
  • Implement secure CORS policies to prevent unauthorized access from web applications.
  • Define and enforce access controls for log files to ensure that only authorized personnel can view and modify logs.

Maintainability

  • The system shall be designed with a modular architecture, facilitating independent updates and modifications to specific components without affecting the entire codebase;
  • All code modules and functions shall be adequately documented, providing clear explanations of their purpose, inputs, outputs, and usage to aid developers during maintenance;
  • System configuration settings should be stored in easily modifiable and well-organized database, reducing the need for code changes to configure updates;
  • Implement logging for all significant system events, errors and warnings;
  • Log entries should include timestamps to facilitate the analysis of events over time;
  • Logs should be stored centrally to facilitate easy monitoring and analysis;

Usability and User Interface

  • Include in the user interface common elements, such as navigation menus and buttons, should maintain consistent placement and behavior throughout the application, reducing cognitive load for users;
  • Minimize the loading of UI elements, aiming for swift responses to user interactions to enhance perceived performance and usability;
  • Provide clear and concise error messages that help users understand issues and guide them toward corrective actions;
  • Incorporate inline help and tooltips strategically to provide additional information or guidance without cluttering the interface.